ALICE All-Iconify-Enabler Version 0.9ž 03.03.1996 von Sven Kopacz 1. Rechtliches Die Sprche kennen Sie zwar alle schon, aber lesen Sie sie trotzdem: Alice ist Freeware, d.h. jeder darf es kostenlos benutzen und kostenlos weitergeben, ebenso darf Alice kostenlos eigenen Programmen beigelegt werden. Allerdings darf eine Weitergabe/Beilage NUR VOLLSTŽNDIG erfolgen, d.h. dieser Text muž dabei sein! Uploads in Mailboxen, die keine Download-Gebhren verlangen (z.B. die Maus-Mailboxen) sind ebenfalls erlaubt. (Eigentlich ist alles, was hier erlaubt ist, nicht nur erlaubt sondern ausdrcklich erwnscht:-) Jede Form der Weitergabe, bei der dem Empf„nger Kosten fr Alice entstehen ist VERBOTEN. 2. Wat it denn dat, wat it denn dat?? Alice ist ein TSR ("Terminate and stay resident"), d.h. in diesem Fall eine Systemerweiterung fr den AUTO-Ordner. Ist Alice installiert, beherrschen alle Applikationen das Iconify. Voraussetzung dafr ist ein Betriebssystem, das eben dieses Iconify untersttzt. Z.Zt. sind das meines Wissens: -MagiC >= V3.0 -MagiCMaC >= 1.2.4 -MultiTOS-Beta -Geneva -N.AES ACHTUNG! Diese Version 0.9ž von Alice l„uft NICHT unter MTOS und Geneva (jedenfalls nicht der ersten ”ffentlichen Demo), bei N.AES weiž ich es nicht (wer's probiert, kann mir gerne schreiben, Adresse s.u.). Eine Anpassung ist geplant, momentan hab ich aber nicht gerade riesig Zeit dafr und weiž auch garnicht, ob da berhaupt Bedarf besteht. Wer also Alice unter anderen Systemen als MagiC/MagiCMaC einsetzen will, soll sich bitte bei mir melden. 3. Installation und Konfiguration Kopieren Sie Alice in den AUTO-Ordner, die Position ist egal. Um Alice zu konfigurieren ben”tigen Sie die GEM-Version (!) von SETTER. SETTER ist ursprnglich ein TTP-Programm von Harun Scheutzow, um verschiedene Programme zu konfigurieren. Markus Kohm hat eine GEM-Version dieses Programms verfažt, die aužerdem neue M”glichkeiten zur Konfiguration bietet. Diese erweiterten M”glichkeiten werden von Alice genutzt, weshalb Sie eben die GEM-Version von SETTER ben”tigen. Diese Version liegt dem Alice-Archiv bei. Ziehen Sie nun einfach das in den AUTO-Ordner kopierte ALICE.PRG auf SETTER.PRG. SETTER wird gestartet und pr„sentiert Ihnen in einem Fenster alle Optionen von Alice. Ich hoffe mal, daž die alle selbsterkl„rend sind. Falls es Probleme gibt, schreiben Sie mir, damit ich in zuknftigen Versionen die Texte entsprechend verbessern kann. Haben Sie alles Ihren Wnschen entsprechend eingestellt, starten Sie Ihren Rechner neu, damit sich Alice installieren kann. Achja, wenn Sie mal die Anleitung zu SETTER lesen, werden Sie feststellen, daž Sie Ihre Einstellungen in Alice NICHT bei jedem Update neu t„tigen mssen... 4. Benutzung Da gibts eigentlich nicht viel zu sagen, das Iconify kennen Sie ja wahrscheinlich aus Programmen wie Thing, CAT, ConNect u.v.a. Žltere Programme bieten normalerweise kein Iconify, weshalb sich dieses OS-Feature IMO schlecht nutzen l„žt (es ist schwierig, von etwas zu profitieren, was man nur ab und zu haben kann). Mit Alice k”nnen Sie nun in allen Programmen die Iconify-Option benutzen, wobei Alice die komplette Verwaltung der Iconify-Fenster fr nicht Iconify-f„hige Applikationen bernimmt. Falls Sie es noch nicht wissen: Das Fensterelement oben rechts mit dem kleinen Dreieck ist der "Iconifier" oder "Smaller". Ein Klick darauf bewirkt, daž das Fenster verkleinert ("ikonisiert") wird und der komplette Inhalt durch ein Icon ersetzt wird. Halten Sie beim Klick auf den Iconifier zus„tzlich die Control-Taste gedrckt, werden alle Fenster der zugeh”rigen Applikation in ein einziges Iconify-Fenster "verwandelt", das ist das sog. "All-Iconify". Ein Doppelklick auf ein ikonisiertes Fenster bewirkt ein "Uniconify", d.h. der ursprngliche Zustand wird wieder hergestellt. Auf Fenster, die durch Alice ikonisiert wurden, k”nnen Sie aužerdem andere Objekte ziehen ("Drag and Drop"), sofern die beteiligten Applikationen das VA-Protokoll untersttzen. Das betreffende Programm verh„lt sich dann, als h„tten Sie das Objekt auf das Icon des Desktops gezerrt. (Fr Programmierer: VA_DRAGACCWIND wird in VA_START umgewandelt). Ist ein von Alice ikonisiertes Fenster das oberste Fenster, dann werden Tastendrcke ignoriert (das w„re sonst zu gef„hrlich). 5. Icons Natrlich kann Alice nicht wissen, welchen tats„chlichen Inhalt ein Fenster hat (z.B. einen Text oder eine Grafik), deshalb werden Sie in den von Alice ikonisierten Fenstern normalerweise nur eines von vier Standard-Icons vorfinden: -Haben Sie ein einzelnes Fenster einer Applikation ikonisiert, erscheint ein Fenster-Icon -Haben Sie ein einzelnes Fenster eines Accessories ikonisiert, erscheint ein Fenster-Icon mit aufgeklapptem Accessory-Men. -Haben Sie ein "All-Iconify" bei einer Applikation ausgel”st, erscheint das Programm-Icon des Original-TOS-Desktops. -Haben Sie ein "All-Iconify" bei einem Accessory ausgel”st, erscheint das Programm-Icon des Original-TOS-Desktops mit aufgeklapptem Accessory-Men. Der Fenstertitel bleibt dabei jeweils erhalten und unter dem Icon erscheint der Name des Programms, zu dem das ikonisierte Fenster geh”rt. 6. Mehr Icons? Da schlappe vier Icons etwas fade sind, wurde in Alice eine Schnittstelle integriert, die in Zusammenarbeit mit Arno Welzel entstanden ist. šber diese Schnittstelle haben externe Programme die M”glichkeit, den Inhalt der ikonisierten Fenster zu zeichnen und somit fr mehr Abwechslung und Information zu sorgen. Fr Rainer User bedeutet das, daž er bei Verwendung des alternativen Desktops Thing (von Arno Welzel) ab Version 1.0 in den ikonisierten Fenstern ganz automatisch die Icons vorfindet, die er auch im Desktop fr die jeweiligen Programme angemeldet hat. Na wenn das nichts ist:-) Wenn Sie einen anderen Desktop benutzen, dann k”nnen Sie versuchen, den Autor dieses Desktops zum Einbau der Schnittstelle zu berreden. Den passenden Ansprechpartner finden Sie i.d.R. im Info-Dialog oder in der Anleitung zu Ihrem Desktop. Programmierer k”nnen sich auch einen eigenen Redraw-Server schreiben (Puristen m”chten vielleicht nur den App-Namen in den Fenstern haben, Multimedia-Anh„nger dagegen ganze MPEG-Filmchen abspielen lassen;-), mehr dazu im Kapitel "Fr Programmierer". 7. V0.9ž Diese Version tr„gt nicht umsonst die Bezeichnung "Beta". Alice wurde zwar ausgiebig getestet, dabei trat aber bei einem Tester ein Problem mit CAT auf, bei dem das Uniconify nicht richtig klappt (das Fenster bleibt klein und der Inhalt wird erst beim n„chsten Redraw ge„ndert). Wenn Ihnen mit CAT oder mit anderen Programmen „hnliches passiert, dann teilen Sie mir das bitte mit, vor allem wenn Sie es schaffen, das ganze irgendwie gezielt zu reproduzieren. Im Moment bin ich n„mlich ziemlich ratlos, woran das liegen k”nnte, vor allem weil es bei mir nicht auftritt... Aužerdem l„uft Alice noch nicht auf allen Systemen. Daher also das "Beta". Irgendwelche anderen Fehlermeldungen i.Z. mit Alice werden natrlich ebenfalls jederzeit (mehr oder weniger dankend;-) von mir entgegengenommen. 8. Fr Programmierer ...stellen sich jetzt vielleicht folgende Fragen: -Soll ich in meine Programme Iconify-Untersttzung einbauen? Das muž natrlich jeder selber wissen. Tatsache ist, daž Alice weiterentwickelt wird und eine Untersttzung aller Iconify-f„higen Betriebssysteme vorgesehen ist, prinzipiell kann man es sich also sparen, in eigenen Programmen Speicher fr Iconify-Untersttzung zu opfern. Andererseits will man vielleicht in Sonderf„llen spezielle Fenster auf keinen Fall ikonisiert bekommen o.„., dann ist eine eigene Untersttzung notwendig. Hinweis: Applikationsmodale Fensterdialoge sind kein Problem, solange man auf die Nachricht WM_NEWTOPPED/WM_ONTOP fr ein anderes Fensterhandle mit dem Toppen des Dialogfensters reagiert. Bevor Sie Iconify allerdings nur halblebig einbauen (das ALL_ICONIFY wird offenbar gerne gemieden), lassen Sie es lieber ganz bleiben oder bieten Sie zumindest eine optionale Abschaltung dafr an. -Was muž ich tun, damit Alice meine Programme auf jeden Fall in Ruhe l„žt? Einfach beim Programmstart ein Fenster mit Iconifier per wind_create erzeugen (und falls es nicht gleich ben”tigt wird, danach eben wieder l”schen). Wann das genau passiert ist unwichtig, wichtig ist nur, daž das erste mit wind_create erzeugte Fenster einen Iconifier besitzt. Wenn das in Ihrem Programm sowieso der Fall ist, k”nnen Sie alles so lassen wie es ist. -Was muž ich tun, damit Alice meine Programme untersttzt. Nix. Was man aber nicht machen sollte, ist ein wind_create mit angemeldetem Iconifier. Dann n„mlich geht Alice davon aus, daž Ihre App das Iconify selber kann und h„lt sich raus (aužer bei der Vergabe der Koordinaten fr das ikonisierte Fenster). -Wie verhalten sich von Alice ikonisierte Fenster fr mein Programm? Fr das Programm erscheinen diese Fenster, als wrden sie sich nach wie vor an der alten Position befinden, jedoch von einem anderen Fenster vollst„ndig verdeckt (d.h. der Redrawbereich hat die Breite/H”he 0). Fhrt das Programm ein wind_set(WF_TOP) auf ein von Alice ikonisiertes Fenster aus, so fhrt dies automatisch zu einem Uniconify. Befindet sich das Fenster "versteckt" in einem All-Iconify-Fenster, so wird es aus diesem Fenster "gel”st". Da das Programm nix vom Iconify mitbekommt, ist es kein Problem, beim Beenden die Fensterkoordinaten zu speichern. Auch wenn alle Fenster ikonisiert oder wom”glich in einem All-Iconify-Fenster "versteckt" (und damit geschlossen) sind. -Sonst noch was? Ja. Wenn Alice das Iconify bernimmt, bernimmt es auch diverse Nachrichten, den Redraw etc...In diesem Fall kann es vorkommen, daž ein event_message oder _multi von der Applikation nicht mehr bearbeitet werden soll. Alice „ndert einen solchen Event daher in einen Message-Event mit der Nachrichtennummer 0x998 (MSG_NOEVENT). Die Applikation muž dann nichts weiter machen, als diese Nachricht einfach zu ignorieren (was normalerweise dadurch geschieht, daž man seine Programme einfach so l„žt, wie sie sind;-) 8.1 Die Schnittstelle fr den Redraw-Server: Wie bereits erw„hnt, kann ein anderes Programm den Inhalt der ikonisierten Fenster zeichnen. Dieses Programm bernimmt damit die Rolle des Redraw-Servers. Dazu muž sich der Server zun„chst bei Alice anmelden: 1) Der Server sucht den Cookie mit Kennung "ALIC" (wird von Alice angelegt) 2) Der Cookie enth„lt als Wert einen Zeiger auf folgende Struktur: typedef struct { long magic; /* Magic - muss 'ALIC' sein */ long version; /* Versionsnummer von Alice */ int redraw_ap_id; /* -1 */ } ALICE_COOKIE; "version" ist die Versionsnummer+Datum in BCD-Schreibweise. Die Version 0.9 vom 17.01.1996 ist also am Eintrag "09170196" zu erkennen. Nun prft der Server, ob in "redraw_ap_id" der Wert -1 eingetragen ist. Ist dies nicht der Fall, hat sich bereits ein anderer Server angemeldet->Pech. Ansonsten tr„gt der Server nun in "redraw_ap_id" seine eigene ap_id (aus appl_init()) ein. 3) Wenn Alice nun ein Fenster ikonifiziert, schickt es an den Server folgende Message: msg[0]=THING_CMD (0x46ff) msg[1]= msg[2]=0; msg[3]=AT_WINICONIFY (0x1000) msg[4/5]= msg[6]= msg[7]=reserviert, immer 0 Als Extension gilt: ".APP" oder ".PRG" = GEM-Programm ".ACC" = Accessory Der Server hat somit die M”glichkeit, intern einen Objektbaum fr den Fensterinhalt aufzubauen. 4) Sobald ein Redraw fr notwendig ist, schickt Alice eine WM_REDRAW-Message im blichen Format an den Server. 5) Wenn das Fenster geschlossen oder wieder auf normale Gr”že (uniconify) gebracht wird, schickt Alice an den Server folgende Message: msg[0]=THING_CMD (0x46ff) msg[1]= msg[2]=0 msg[3]=AT_WINUNICONIFY (0x1001) msg[4]= msg[5-7]=reserviert, immer 0 Der Server kann nun den Speicher fr den evtl. erzeugten Objektbaum wieder frei geben. L„žt sich der Fensterinhalt schnell aufbauen (z.B. einfacher Text), dann kann 3) und 5) einfach ignoriert werden und der Inhalt "on the fly" beim Eintreffen einer Redraw-Message erzeugt werden. 6) Sollte der Server sich unerwartet beenden, schreibt er in den Alice-Cookie in 'redraw_ap_id' wieder den Wert -1, damit Alice weiss, daž der Server nicht mehr aktiv ist. 7) Der Server muž, falls er selbst Fenster benutzt, sein Iconify selber machen, weil alle seine wind_get-Anfragen von Alice durchgelassen werden, es also grože Probleme mit den von Alice ikonisierten Fenstern g„be. Alice meldet in den Serverfenstern auch keine Iconifier an (auch nicht, wenn in der Konfiguration 'Iconify fr alle Apps bernehmen' gew„hlt wurde). 9. Kontakt Ich selbst bin per eMail im Mausnet unter Sven Kopacz @ LB zu erreichen. In der Maus LB ist auch immer die neuste Version von Alice zu finden. LB MAUS Ludwigsburg 07141-280479 Gastdownload, nicht von 18-20 und 21-23 (Zahler) Netz, nicht anrufen: 21.10-21.45 und 2.50- 5.30 Per Post geht's auch: Sven Kopacz Metzinger Str. 20 70597 Stuttgart Wer eine Antwort per Post wnscht, legt einen adressierten & frankierten Rckumschlag bei, fr die neuste Alice-Version zus„tzlich eine Diskette (DD oder HD). Fr die netten Leute mit den Spendierhosen hier noch meine Bankverbindung: Kto.-Nr. 3213502 BLZ 600 501 01 Landesgirokasse Stuttgart SETTER (GEM-Version) ist von Markus Kohm (Markus Kohm @ KA2) THING ist von Arno Welzel (aw@zaphot.augusta.de oder Arno Welzel @ A) Ein Dankesch”n geht aužerdem an alle Tester: Christoph Bartholme Oliver Buchmann Andreas Frank Ulli Hahndorf Raymund Hemmerling Andrew Lee Frank Mller Richard Quadt Uwe Seidler Holger Weets Arno Welzel Rainer Wiesenfeller -Ende-